/*
 *  SessionMonitorManager.java
 * 
 *  Created on May 19, 2008, 11:02:12 PM
 */
package pl.edu.agh.ssm.monitor;

import java.util.List;
import jpcap.NetworkInterface;
import pl.edu.agh.ssm.monitor.data.SessionData;
import pl.edu.agh.ssm.monitor.data.SessionDataContainer;
import pl.edu.agh.ssm.monitor.data.SessionMediaType;
import pl.edu.agh.ssm.monitor.data.SessionNodeType;
import pl.edu.agh.ssm.monitor.listeners.ListenerConfig;
import pl.edu.agh.ssm.monitor.listeners.PacketListener;
import pl.edu.agh.ssm.monitor.net.PacketReceiver;
import pl.edu.agh.ssm.monitor.plotter.DataPlotter;
import pl.edu.agh.ssm.monitor.visualization.GraphEdgeDisplayer;
import pl.edu.agh.ssm.monitor.visualization.GraphNodeDisplayer;

/**
 *
 * @author aneezka
 */
public interface SessionMonitorManager {

    public NetworkInterface[] getNetworkInterfaces();

    public String[] getAvailableListeners();
    
    public List<DataPlotter<? extends SessionData> > getCreatedPlotters();

    public PacketListener addListener(PacketReceiver receiver, ListenerConfig config);

    public <T extends SessionData> SessionDataContainer<T> createContainer(Class<T> aClass);
    
    public GraphNodeDisplayer getNodeDisplayer(SessionNodeType type);
    
    public GraphEdgeDisplayer getEdgeDisplayer(SessionMediaType type);
    
    public void cleanup();
    
    public void setup(PacketReceiver receiver, SessionStateAgent agent);
}
